package ru.compft.common.services;

import org.springframework.transaction.annotation.Transactional;
import ru.compft.common.data.AppPermission;

import java.util.List;

/**
 * User: VVasiliev
 * Date: 14.06.12
 * Time: 14:00
 * Сервис работы с правами доступа к бизнес методам (функциям)
 * По умолчанию все методы только для чтения
 */
@Transactional(readOnly = true)
public interface PermissionsService {
    /**
     * Получение списка всех прав доступа к бизнес методам (функциям)
     *
     * @return
     */
    List<AppPermission> getAllAppPermission();

    /**
     * Получение прав доступа от определенного индекса (from) и определенного количества (count)
     *
     * @param from
     * @param count
     * @return
     */
    List<AppPermission> getPermissions(int from, int count);

    /**
     * Подсчитываем все права доступа в системе
     *
     * @return
     */
    int countAllPermissions();

    /**
     * Получаем право доступа по коду
     *
     * @param key
     * @return
     */
    AppPermission getPermissionByCode(String key);

    /**
     * Получаем право доступа по id
     *
     * @param id
     * @return
     */
    AppPermission findPermissionById(Long id);

    /**
     * Получаем все права доступа для роли по ее ID
     *
     * @return
     */
//    List<AppPermission> getAllPermissionsByRoleId(Long roleId);

    /**
     * Получаем все роли, которым доступен данный объект (имеющие данной право доступа)
     *
     * @param id
     * @return
     */
//    List<AppRole> getAllRoleByPermissionId(Long id);

    /**
     * Создаем новую роль
     *
     * @param appPermission
     * @return
     */
    boolean createPermission(AppPermission appPermission);
}
